using System;

namespace Microsoft.WowAddonStudio.FrameXml.Services
{
	/// <summary>
	/// 
	/// </summary>
	public interface IFrameXmlDesignerService
	{
		/// <summary>
		/// Gets or sets the host.
		/// </summary>
		/// <value>The host.</value>
		IServiceProvider Host { get; }

		/// <summary>
		/// Gets or sets the document moniker.
		/// </summary>
		/// <value>The document moniker.</value>
		string DocumentMoniker { get; }

        /// <summary>
        /// Gets whether the underlying document is dirty.
        /// </summary>
        /// <returns>A <c>bool</c> indicating whether the underlying document is dirty.</returns>
        bool GetDirty();

        /// <summary>
        /// Sets the dirty flag on the underlying document.
        /// </summary>
        /// <param name="isDirty">True, if the document is dirty.</param>
	    void SetDirty(bool isDirty);

		/// <summary>
		/// Displays the specified error message in a message box.
		/// </summary>
		/// <param name="message">The message.</param>
		void ShowError(string message);

		/// <summary>
		/// Displays the specified error message in a message box.
		/// </summary>
		/// <param name="message">The message.</param>
		void NotifyError(string message);

		/// <summary>
		/// Displays the specified exception and information about the exception in a message box.
		/// </summary>
		/// <param name="ex">The ex.</param>
		/// <param name="message">The message.</param>
		void ShowError(Exception ex, string message);

		/// <summary>
		/// Displays the specified message in a message box.
		/// </summary>
		/// <param name="message">The message.</param>
		void ShowMessage(string message);

		/// <summary>
		/// Displays the specified message in a message box.
		/// </summary>
		/// <param name="message">The message.</param>
		void NotifyMessage(string message);

		/// <summary>
		/// Attempts to display the specified form in a dialog box.
		/// </summary>
		/// <param name="form">The System.Windows.Forms.Form to display.</param>
		/// <returns>One of the System.Windows.Forms.DialogResult values indicating the result code returned by the dialog box.</returns>
		System.Windows.Forms.DialogResult ShowDialog(System.Windows.Forms.Form form);

	}
}